package br.com.firula.web;

import java.io.IOException;

import org.springframework.beans.factory.annotation.Autowired;

import br.com.firula.bo.EstadoBO;
import br.com.firula.bo.ModalidadeBO;
import br.com.firula.bo.PaisBO;
import br.com.firula.bo.TimeBO;
import br.com.firula.to.BaseTO;
import br.com.firula.to.EstadoTO;
import br.com.firula.to.ModalidadeTO;
import br.com.firula.to.PaisTO;
import br.com.firula.to.TimeTO;
import br.com.firula.util.Utils;
import br.com.firula.web.filter.Filtro;

public class TimeAction extends GenericAction {

	private static final long serialVersionUID = -6630041871782906668L;

	private EstadoBO mgrEstado;
	private ModalidadeBO mgrModalidade;
	private PaisBO mgrPais;
	private TimeBO mgrTime;

	@Autowired
    public void setEstadoBO(EstadoBO estadoBO) {
        this.mgrEstado = estadoBO;
    }

	@Autowired
    public void setModalidadeBO(ModalidadeBO modalidadeBO) {
        this.mgrModalidade = modalidadeBO;
    }

	@Autowired
    public void setPaisBO(PaisBO paisBO) {
        this.mgrPais = paisBO;
    }

	@Autowired
    public void setTimeBO(TimeBO TimeBO) {
        this.mgrTime = TimeBO;
    }

    public String edit() {
    	String id = request.getParameter("id");

    	TimeTO time = new TimeTO();
		if (id != null && !id.equalsIgnoreCase("")){
			time = mgrTime.getTimeById(id);
		}
		request.setAttribute("time", time);

		Filtro modalidadeFiltro = new Filtro();
		modalidadeFiltro.setClazz(ModalidadeTO.class);
		modalidadeFiltro.setExample(new ModalidadeTO());
		request.setAttribute("modalidadeList", mgrModalidade.getList(modalidadeFiltro));

		Filtro paisFiltro = new Filtro();
		paisFiltro.setClazz(PaisTO.class);
		paisFiltro.setExample(new PaisTO());
		request.setAttribute("paisList", mgrPais.getList(paisFiltro));

		Filtro estadoFiltro = new Filtro();
		estadoFiltro.setClazz(EstadoTO.class);
		estadoFiltro.setExample(new EstadoTO());
		request.setAttribute("estadoList", mgrEstado.getList(estadoFiltro));

		return "edit";
    }

	public String list(){
		TimeTO time = new TimeTO();
		Filtro timeFiltro = new Filtro();
		timeFiltro.setClazz(TimeTO.class);
		timeFiltro.setExample(time);
		timeFiltro.setPageSize(Integer.MAX_VALUE);
		//timeFiltro.setPage(page);
		request.setAttribute("timeList", mgrTime.getList(timeFiltro));
		request.setAttribute("resultSize", mgrTime.getListCount(timeFiltro));
		return "listAdm";
	}

	public String save(){
		TimeTO time = new TimeTO();
		String id = request.getParameter("time.id");
		String nomeCompleto = request.getParameter("time.nomeCompleto");
		String nomeCurto = request.getParameter("time.nomeCurto");
		String anoFundacao = request.getParameter("time.anoFundacao");
		String modalidadeId = request.getParameter("time.modalidade.id");
		String paisId = request.getParameter("time.pais.id");
		String estadoId = request.getParameter("time.estado.id");

		time.setId((Utils.verificaCampoValido(id) ? Long.valueOf(id) : null));
		time.setNomeCompleto(nomeCompleto);
		time.setNomeCurto(nomeCurto);
		time.setAnoFundacao((Utils.verificaCampoValido(anoFundacao) ? Integer.valueOf(anoFundacao) : null));
		time.setModalidade(mgrModalidade.getModalidadeById(modalidadeId));
		time.setPais(mgrPais.getPaisById(paisId));
		time.setEstado(mgrEstado.getEstadoById(estadoId));
		mgrTime.save(time);

		try {
			response.sendRedirect("/firula/adm/painel/time/list");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

	public String delete(){
		String id = request.getParameter("id");
		TimeTO time = mgrTime.getTimeById(id);
		time.setRemovido(true);
		mgrTime.save(time);

		try {
			response.sendRedirect("/firula/adm/painel/time/list");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	protected BaseTO getNew() {
		return null;
	}

}
